/**
 * @author t_at (eson_tang@163.com)
 * @brief This is the header file for t_at_port.c, which is the porting file for the AT command module.
 * @version 1.2
 * @date 2024/10/15
 * @copyright (c) 2024 eson
 */
#ifndef T_AT_PORT_H
#define T_AT_PORT_H
#include "t_platform.h"

#ifdef T_AT_PORT_USER_H      // voerdelay
#include "t_at_port_user.h"  //user porting file for the AT command module.
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef URC_EN
    // enable URC callback  events array
    /**
     * @brief URC callback  events array.
     * 未请求回复命事件组使能
     * @note 0:disable 1:enable  打开后就可以进行urc回调事件
     */
    #define URC_EN 1 /*URC en.*/
#endif/*URC_EN */

#ifndef RCV_BUFFER_SIZE
    /**
     * @brief receive buffer size.
     * 接收缓存大小
     * @note 接收缓存大小，默认为256字节，可根据实际需求进行修改。
     */
    #define RCV_BUFFER_SIZE 512
#endif /*RCV_BUFFER_SIZE */

#ifndef URC_CMD_BUFFER_SIZE
    /**
     * @brief URC buffer size.
     */
    #define URC_CMD_BUFFER_SIZE 512 /*URC cmd buffer size.*/
#endif/*URC_CMD_BUFFER_SIZE */

#ifndef URC_DATA_BUFFER_SIZE
    /**
     * @brief URC buffer size.
     * URC数据缓存大小
     * @note 接收缓存大小，默认为256字节，可根据实际需求进行修改。
     */
    #define URC_DATA_BUFFER_SIZE 512
#endif /*URC_DATA_BUFFER_SIZE */

#ifndef URC_RING_SIZE
    /**
     * @brief URC ringbuffer size.
     * URC环形缓冲区个数
     * @note  URC环形缓冲区个数，默认为30个，可根据实际需求进行修改。
     */
    #define URC_RING_SIZE 6
#endif /*URC_RING_SIZE */

#ifndef T_AT_DEBUG_EN
    /**
     * @brief AT debug enable.
     * AT调试使能
     * @note 0:disable 1:enable  打开后就可以进行at调试
     * @note 调试模式下，会打印at命令和响应信息，方便调试。
     */
    #define T_AT_DEBUG_EN 0
#endif /*T_AT_DEBUG_EN */

#ifndef T_AT_RTOS_EN
    /**
     * @brief AT RTOS enable.
     * AT RTOS使能
     * @note 0:disable 1:enable
     */
    #define T_AT_RTOS_EN 1

#endif /*T_AT_RTOS_EN */

#ifndef T_AT_RTOS_API_EN
    /**
     * @brief AT RTOS API enable.
     */
    #define T_AT_RTOS_API_EN 1
#endif /*T_AT_RTOS_API_EN */

uint32_t t_at_get_tick(void);

void t_at_1ms(void);

#ifdef __cplusplus
}
#endif

#endif  // T_AT_PORT_H